package cn.zhentao.dao;
import cn.zhentao.pojo.*;
import cn.zhentao.vo.CartVo;
import cn.zhentao.vo.OrderVo;
import cn.zhentao.vo.PageInfoA;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface PhoneADao {
    //模糊查询根据类型  Pura
    @Select("select * from phone where phone_type like concat ('%','Pura','%') and del_flag=0")
    List<Phone> findByPhoneTypeLikePura();
    //模糊查询根据类型  Pocket
    @Select("select * from phone where phone_type like concat ('%','Pocket','%') and del_flag=0 ")
    List<Phone> findByPhoneTypeLikePocket();
    //模糊查询根据类型  Mate
    @Select("select * from phone where phone_type like concat ('%','Mate','%') and del_flag=0 ")
    List<Phone> findByPhoneTypeLikeMate();
    //模糊查询根据类型  nova
    @Select("select * from phone where phone_type like concat ('%','nova','%') and del_flag=0 ")
    List<Phone> findByPhoneTypeLikeNova();

    @Select("select * from img where src like concat ('%','Pura','%') and id=#{imdId}")
        //模糊查询图片路径 根据Pura
    Img findBySrcLikePura(int id);
    @Select("select * from img where src like concat ('%','Pocket','%') and id=#{imdId}")
        //模糊查询图片路径 根据Pocket
    Img findBySrcLikePocket(int id);
    @Select("select * from img where src like concat ('%','Mate','%') and id=#{imdId}")
        //模糊查询图片路径 根据Mate
    Img findBySrcLikeMate(int id);
    @Select("select * from img where src like concat ('%','nova','%') and id=#{imdId}")
        //模糊查询图片路径 根据nova
    Img findBySrcLikenova(int id);
    @Select("select * from menu")
    //查询所有菜单表
    List<Menu> findAllMenu();
    @Select("select * from color c left join phone_color ph on c.id=ph.color_id where phone_id=#{id} ")
    //查询颜色根据手机表的id
    List<Color> findAllColorByPhoneId(int id);
    @Select("select * from version v left join phone_version_price pvp on v.id=pvp.version_id where phonef_id=#{id}")
    //查询版本根据手机表的id
    List<Version> findAllVersionByPhoneId(int id);
    @Select("select * from price p left join phone_version_price pvp on p.id=pvp.price_id where phonef_id=#{phonef_id} and version_id=#{version_id}")
    //查询价格 根据手机表id 以及版本表id
    Price findAllPriceByPhoneIdAndVersionId(@Param("phonef_id")Integer phonef_id,@Param("version_id") Integer version_id);
    @Insert("insert into cart(cart_type,cart_color,cart_version,num,cart_price,img_id,user_id) values (#{cartType},#{cartColor},#{cartVersion},#{num},#{cartPrice},#{imgId},#{userId})")
    //添加购物车
    int insertCart(Cart cart);
    //查询购物车的所有
    List<CartVo> findAllCartByUserId(int userId);
    @Update("update phone set phone_inven=phone_inven-#{num} where id=#{id}")
    //修改库存数量
    int updateInven(@Param("num") int num,@Param("id") int id);

    //查询所有手机    管理端
    List<Phone> findByPhoneAll(PageInfoA pageInfoA);
    @Select("select * from img where id=#{imdId}")
        //查询所有图片路径 管理端
    Img findByImgAllByPhoneId(int id);

    //查询价格 根据手机Id
    List<Price> findPriceAllByPhoneId(@Param("id") int id,@Param("pageInfoA") PageInfoA pageInfoA);
    //删除手机的方法根据id 软删除
    int deletePhone(int id);
    //查询所有版本
    List<Version> findAllVerison();
    //查询所有颜色
     List<Color> findAllColor();
     //添加手机的方法
    int insertPhone(Phone phone);
    //添加手机与颜色中间表的方法
    int insertPhoneColor(@Param("phoneId")int phoneId,@Param("colorId")int colorId);
    //添加价格表的方法
    int insertPrice(Price price);
    //添加手机 版本 价格 中间表的方法
    int insertPhonePriceVersion(@Param("phonefId")int phonefId,@Param("versionId")int versionId,@Param("priceId")int priceId);
    //添加图片表的方法
    int insertImg(Img img);
    Phone findByphoneTypePhone(String phoneType);

    //修改手机表 修改手机库存,版本,价格,颜色
    //库存直接修改 版本,价格先删除后修改, 颜色先删除后修改
    int updatephoneInven(@Param("phoneInven") Integer phoneInven,@Param("id") Integer id);
    //删除颜色中间表
    int deletePhoneColor(Integer id);
    int updatePrice(@Param("prices") Double prices,@Param("id") Integer id1);
    //查找库存
//    List<Phone> findByPhoneInven();
    //查询所有管理员菜单表
    List<MenuAdmin> findAllMenuAdmin();
    //修改管理员信息
    int updateAdmin(Address address);
    //删除购物车信息的方法
    int deleteCart(int id);
    //添加订单表的方法
    int insertOrder(Order order);
    //查询订单的方法 根据用户的id
    List<OrderVo> findAllOrder(int userId);
    //修改订单状态
    int updateState(int id);
    //修改订单状态 修改为发货状态
    int fahuoUpdate(int id);
    //修改订单状态 修改为退货待处理状态
    int updatetuihuo(int id);
    //修改订单状态 修改为已退货状态
    int UpdateTuiHuoAdmin(int id);
    //修改订单状态 修改为已收货状态,商家拒绝退货
    int UpdateRefuseReturn(int id);
    //修改订单状态 点击拒收改为已退货
    int updateJuShou(int id);
    //查询所有订单表
    List<OrderVo> findAllOrderAdmin();

}
